import axios from 'axios';
import {$token} from "@/utils/auth.js";
import TipUtil from "@/utils/message.js";

const BASE_URL = 'http://127.0.0.1:16250/';

const $axios = axios.create({
    baseURL: BASE_URL, // 设置基础URL
    timeout: 10000, // 设置超时时间
    headers: {
        'Content-Type': 'application/json;charset=utf-8',
    }
});

// 添加请求拦截器
$axios.interceptors.request.use(
    (config) => {
        // 在发送请求之前做些什么
        // 可以在这里设置一些请求头信息等
        console.log('请求参数:', config)
        config.headers.Authorization = '' + $token.getToken();
        return config;
    },
    (error) => {
        // 对请求错误做些什么
        return Promise.reject(error);
    }
);

// 添加响应拦截器
$axios.interceptors.response.use(
    (response) => {
        // console.log('res:' + JSON.stringify(response.data))
        const code = response.data.code || 500;
        if (code === 200) {
            return response.data;
        }
        if (code === 401) {
            TipUtil.error('用户未登录，请重新登录！');
            return Promise.reject(response);
        } else if (code === 403) {
            TipUtil.error('当前用户没有访问权限！');
            return Promise.reject(response);
        }
        TipUtil.error(response.data.message);
        return Promise.reject(response);
    },
    (error) => {
        console.log('error:' + error);
        let {message} = error;
        if (message === 'Network Error') {
            message = '服务接口连接异常';
        } else if (message.includes('timeout')) {
            message = '服务接口请求超时';
        }
        TipUtil.error(message);
        return Promise.reject(error);
    }
);

export default $axios;